package north.tpop.core.test;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import java.time.Duration;
import java.util.List;
import north.tpop.core.pageobject.Contact;
import north.tpop.core.PageObjectFactory;
import north.tpop.core.WaitExecutor;
import north.tpop.core.pageobject.S1Page;
import north.tpop.core.command.ClickCommand;
import north.tpop.core.wait.IsVisible;
import north.tpop.core.wait.SeleniumWaitExecutor;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class S1Test {
private HtmlUnitDriver driver;
private S1Page page;
@Before
public void setup() {
driver = new HtmlUnitDriver(BrowserVersion.CHROME);
driver.setJavascriptEnabled(true);
WaitExecutor waitExecutor = new SeleniumWaitExecutor(driver, Duration.ofSeconds(5));
PageObjectFactory pageObjectFactory = new PageObjectFactory(driver, waitExecutor);
page = pageObjectFactory.newPageObject(S1Page.class);
driver.get("http://localhost:8085/view/s1.html");
}
@Test
public void wait_until_visible() throws InterruptedException {
Assert.assertFalse("hiddenText should be hidden", page.hiddenText.isDisplayed());
page.showButton.execute(new ClickCommand());
page.hiddenText.wait(new IsVisible());
Assert.assertTrue("hiddenText should now be visible", page.hiddenText.isDisplayed());
}
@Test
public void contact_list_should_contain_items() {
List<Contact> items = page.contactsList.contacts.getAll();
Assert.assertEquals("contacts items should contain 3 elements", 3, items.size());
final Contact firstItem = items.get(0);
Assert.assertEquals("first contact item should have name First", "First", firstItem.name.getText());
Assert.assertEquals("first contact item should have email first@first.com", "first@first.com", firstItem.email.getText());
}
@Test
public void first_item_from_contact_list_should_have_name_andemai() {
final Contact firstItem = page.contactsList.contacts.get(0);
Assert.assertEquals("first contact item should have name First", "First", firstItem.name.getText());
Assert.assertEquals("first contact item should have email first@first.com", "first@first.com", firstItem.email.getText());
}
}